home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / amc / amc_install.exe / {app} / Scripts / FilmUP (IT).ifs < prev    next >
Encoding:
Text File  |  2005-02-02  |  9.4 KB  |  321 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=L. Francisco
  8. Title=FilmUP
  9. Description=Get movie info from FilmUP.it
  10. Site=http://www.filmup.com
  11. Language=IT
  12. Version=1.0.1 - 02.02.2005
  13. Requires=3.5.0
  14. Comments=**Changes**|Pivello: query URL changed|Zandal:  sistemato puntamento a COMMENTS|Pivello: Film site URL selectable instead of FilmUp page URL|dinolib: adapted to v.3.5.0 and little bugfix
  15. License=*  The source code of the script can be used in   |*  another program only if full credits to              |*  script author and a link to Ant Movie Catalog  |*  website are given in the About box or in       |*  the documentation of the program               |
  16. GetInfo=1
  17.  
  18. [Options]
  19. AlternateURL=0|0|0=Use the FilmUP web site for FieldURL|1=Try to use ufficial movie web site for FieldURL
  20.  
  21. ***************************************************)
  22.  
  23. program FilmUP;
  24.  
  25. var
  26.   MovieName: string;
  27.   TheMovieAddress: string;
  28.  
  29. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  30. var
  31.   i: Integer;
  32. begin
  33.   result := -1;
  34.   if StartAt < 0 then
  35.     StartAt := 0;
  36.   for i := StartAt to List.Count-1 do
  37.     if Pos(Pattern, List.GetString(i)) <> 0 then
  38.     begin
  39.       result := i;
  40.       Break;
  41.     end;
  42. end;
  43.  
  44. procedure AnalyzePage(Address: string);
  45. var
  46.   Page: TStringList;
  47.   LineNr: integer;
  48.   BeginPos: integer;
  49. begin
  50.   Page := TStringList.Create;
  51.   Page.Text := GetPage(Address);
  52.   LineNr := FindLine('<title>FilmUP - Cerca: ', Page, 0);
  53.   if LineNr = -1 then
  54.   begin
  55.     SetField(fieldURL, Address);
  56.     AnalyzeMoviePage(Page);
  57.   end
  58.   else
  59.   begin
  60.     PickTreeClear;
  61.     AddMoviesTitles(Page);
  62.     if TheMovieAddress='' then
  63.     begin
  64.       if PickTreeExec(Address) then AnalyzePage(Address);
  65.     end
  66.     else
  67.     begin
  68.       SetField(fieldURL, TheMovieAddress);
  69.       Page.Text := GetPage(TheMovieAddress);
  70.       AnalyzeMoviePage(Page);
  71.     end;
  72.   end;
  73.   Page.Free;
  74. end;
  75.  
  76. procedure AnalyzeMoviePage(Page: TStringList);
  77. var
  78.   Line: string;
  79.   NomeHtml: string;
  80.   LineNr,PrevLineNr: Integer;
  81.   BeginPos, EndPos: Integer;
  82.   Field: integer;
  83. begin
  84.   LineNr := FindLine('<font face="arial, helvetica" size="3"><b>', Page, 0);
  85.   if LineNr > -1 then
  86.   begin
  87.     //Translated Title
  88.     Line := Page.GetString(LineNr);
  89.     HTMLRemoveTags(Line);
  90.     SetField(fieldTranslatedTitle, Line);
  91.  
  92.     repeat
  93.       //Look for next info
  94.       repeat
  95.         LineNr := LineNr + 1;
  96.         Line := Page.GetString(LineNr);
  97.         HTMLRemoveTags(Line);
  98.       until Line<>'';
  99.  
  100.       //Look for type of line
  101.       if Line = 'Titolo originale: ' then
  102.         Field := fieldOriginalTitle
  103.       else if Line = 'Regia: ' then
  104.         Field := fieldDirector
  105.       else if Line = 'Produzione: ' then
  106.         Field := fieldProducer
  107.       else if Line = 'Nazione: ' then
  108.         Field := fieldCountry
  109.       else if Line = 'Genere: ' then
  110.         Field := fieldCategory
  111.       else if Line = 'Anno: ' then
  112.         Field := fieldYear
  113.       else if Line = 'Durata: ' then
  114.         Field := fieldLength //Special case: get number only
  115.       else if Line = 'Sito ufficiale: ' then
  116.         Field := fieldURL
  117.       else if Line = 'Cast: ' then
  118.         Field := fieldActors
  119.       else if Line = 'Trama:' then
  120.         Field := fieldDescription
  121.  
  122.  
  123.       else
  124.         Field := 0;
  125.  
  126.       // I have to add this test, for sometimes the description
  127.       // is on the same line as the tag 'Trama'
  128.       if (copy(Line,1,6)='Trama:') and (length(Line)>6) then
  129.        begin
  130.         Field := fieldDescription;
  131.         Delete(Line,1,6);
  132.         HTMLDecode(Line);
  133.        end
  134.       else
  135.        begin
  136.         //Get values
  137.         LineNr := LineNr + 1;
  138.         Line := Page.GetString(LineNr);
  139.         HTMLRemoveTags(Line);
  140.         HTMLDecode(Line);
  141.  
  142.         //Special case: Length
  143.         if Field = fieldLength then Line := copy(Line,1,length(Line)-1);
  144.        end;
  145.  
  146.        //Alternative URL case
  147.        if (field = fieldURL) then
  148.        begin
  149.          if (Length(Line) = 0) or (GetOption('AlternateURL')=0) then      // if WEB url missing or explicitly requested...
  150.            Line := GetField(fieldURL)  // ...restore FilmUp URL
  151.          else
  152.            Line := 'http://'+Line;
  153.        end;
  154.  
  155.       if Field<>0 then SetField(Field,Line);
  156.  
  157.     until Field=fieldDescription;
  158.   end;
  159.  
  160.   PrevLineNr := LineNr;
  161.  
  162.   //Comments
  163.   LineNr := FindLine('">Recensione</a>', Page, PrevLineNr);
  164.   if LineNr > -1 then
  165.   begin
  166.     Line := Page.GetString(LineNr);
  167.     if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line));
  168.     if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line));
  169.     Delete(Line,1,pos('<a href="',Line)+8);
  170.     NomeHtml :=Copy(Line,1,pos('"',Line)-1);
  171.     if (copy(NomeHtml,1,1)<>'/') then
  172.     begin
  173.       NomeHtml := '/' + NomeHtml;
  174.     end;
  175.     GetComments('http://www.filmup.com'+NomeHtml);
  176.     PrevLineNr := LineNr;
  177.   end;
  178.  
  179.   //Rating
  180.   LineNr := FindLine('">Opinioni</a>', Page, PrevLineNr);
  181.   if LineNr > -1 then
  182.   begin
  183.     Line := Page.GetString(LineNr);
  184.     Delete(Line,1,pos('Recensione',Line));
  185.     Delete(Line,1,pos('<a href="',Line)+8);
  186.  
  187.     Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'</b> - <img src="/img/star/');
  188.     if Line <> '' then
  189.     begin
  190.       Line := Copy(Line,1,pos('</b> - <img src="/img/star/',Line)-1);
  191.       if pos('.',Line)>0 then Line := Copy(Line,1,pos('.',Line)-1);
  192.       SetField(fieldRating,Line);
  193.     end;
  194.     PrevLineNr := LineNr;
  195.   end;
  196.  
  197.   //Picture
  198.   LineNr := FindLine('<a href="posters/locp/', Page, PrevLineNr);
  199.   if LineNr = -1 then
  200.   begin
  201.     LineNr := FindLine('<img src="locand/', Page, PrevLineNr);
  202.     if LineNr > -1 then
  203.     begin
  204.       Line := Page.GetString(LineNr);
  205.       Delete(Line,1,pos('<img src="locand/', Line)+9);
  206.       GetPicture('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1));
  207.     end;
  208.   end
  209.   else
  210.   begin
  211.     Line := Page.GetString(LineNr);
  212.     Delete(Line,1,pos('<a href="posters/locp/',Line)+8);
  213.     Line := GetLineFromOtherPage('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/');
  214.     if Line <> '' then
  215.     begin
  216.       Delete(Line,1,pos('<img src="../',Line)+12);
  217.       GetPicture('http://www.filmup.com/posters/'+Copy(Line,1,pos('"',Line)-1));
  218.     end;
  219.   end;
  220.   //DisplayResults;
  221. end;
  222.  
  223. function GetLineFromOtherPage(address: string; hint: string): string;
  224. var
  225.   Page: TStringList;
  226.   LineNr: integer;
  227. begin
  228.   Page := TStringList.Create;
  229.   Page.Text := GetPage(Address);
  230.   LineNr := FindLine(hint, Page, 0);
  231.   if LineNr > -1 then result := Page.GetString(LineNr);
  232.   Page.Free;
  233. end;
  234.  
  235. procedure GetComments(address: string);
  236. var
  237.   Page: TStringList;
  238.   BeginLine: integer;
  239.   EndLine: integer;
  240.   i: integer;
  241.   Line, Comments: string;
  242. begin
  243.   Page := TStringList.Create;
  244.   Page.Text := GetPage(Address);
  245.   BeginLine := FindLine('RECENSIONI', Page, 0);
  246.   BeginLine := FindLine('<font face="arial,helvetica" size="2"><b>', Page, BeginLine);
  247.   EndLine := FindLine('<a href="opinioni.htm">Scrivi la tua recensione!</a></font><br><br>', Page, BeginLine);
  248.   for i:= BeginLine+1 to EndLine-1 do
  249.   begin
  250.     Line := Page.GetString(i);
  251.     Line := StringReplace(Line, '<br>', #13#10);
  252.     Line := StringReplace(Line, #13#10#32, #13#10);
  253.     HTMLRemoveTags(Line);
  254.     HTMLDecode(Line);
  255.     Comments := Comments + Line;
  256.   end;
  257.   SetField(fieldComments, Comments);
  258.   Page.Free;
  259. end;
  260.  
  261. procedure AddMoviesTitles(Page: TStringList);
  262. var
  263.   LineNr: Integer;
  264.   Line: string;
  265.   MovieTitle, MovieAddress: string;
  266.   BeginPos, EndPos: Integer;
  267. begin
  268.   LineNr := 0;
  269.   LineNr := FindLine('FilmUP - Scheda:',Page,LineNr);
  270.   while LineNr > -1 do
  271.   begin
  272.     Line := Page.GetString(LineNr);
  273.     BeginPos := pos('<a href="',Line)+9;
  274.     EndPos := pos('" TARGET="_blank"><b>FilmUP - Scheda: ',Line);
  275.     MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
  276.     Delete(Line,1,EndPos);
  277.     BeginPos := pos('Scheda: ',Line)+8;
  278.     EndPos := pos('</a>',Line);
  279.     MovieTitle := copy(Line,BeginPos,EndPos-BeginPos);
  280.     HTMLRemoveTags(MovieTitle);
  281.     HTMLDecode(Movietitle);
  282.     LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1);
  283.     PickTreeAdd(MovieTitle, MovieAddress);
  284.  
  285.     if TheMovieAddress='*' then
  286.       TheMovieAddress := MovieAddress
  287.     else
  288.       TheMovieAddress := '';
  289.   end;
  290.   LineNr := FindLine('Successivo',Page,LineNr);
  291.   Line := Page.GetString(LineNr);
  292.   BeginPos := pos('HREF',Line);
  293.   if BeginPos>0 then
  294.   begin
  295.     Delete(Line,1,BeginPos + 5);
  296.     EndPos := pos('"',Line);
  297.     MovieAddress := copy(Line,1,EndPos-1);
  298.     PickTreeMoreLink('http://www.filmup.com'+MovieAddress);
  299.   end;
  300.   if TheMovieAddress='*' then TheMovieAddress := '';
  301. end;
  302.  
  303. // -----------------------------
  304. // Questo Φ il main dello script
  305. // -----------------------------
  306. begin
  307.   if CheckVersion(3,5,0) then
  308.    begin
  309.     TheMovieAddress := '*';
  310.     MovieName := GetField(fieldOriginalTitle);
  311.     if MovieName = '' then
  312.       MovieName := GetField(fieldTranslatedTitle);
  313.     if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then
  314.     begin
  315.       AnalyzePage('http://www.filmup.com/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25');
  316.     end;
  317.    end
  318.   else
  319.     ShowMessage('Questo script richiede una versione pi∙ nuova di Ant Movie Catalog (almeno la versione 3.5.0)');
  320. end.
  321.